package com.library.borrow.service;

import com.library.borrow.model.BorrowRecord;
import com.library.util.PageModel;
import java.util.Date;
import java.util.List;
import java.util.Map;

public interface BorrowRecordService {
    // 借书（创建借阅记录并更新图书状态）
    boolean borrowBook(BorrowRecord borrowRecord);
    
    // 还书（更新借阅记录和图书状态）
    boolean returnBook(Integer id, Date actualReturnDate);
    
    // 根据ID删除借阅记录
    boolean deleteBorrowRecord(Integer id);
    
    // 更新借阅记录
    boolean updateBorrowRecord(BorrowRecord borrowRecord);
    
    // 根据ID查询借阅记录
    BorrowRecord getBorrowRecordById(Integer id);
    
    // 获取所有借阅记录
    List<Map<String, Object>> getAllBorrowRecords();
    
    // 根据图书ID查询借阅记录
    List<Map<String, Object>> getBorrowRecordsByBookId(Integer bookId);
    
    // 根据借阅人查询借阅记录
    List<Map<String, Object>> getBorrowRecordsByReaderName(String readerName);
    
    // 根据借阅状态查询借阅记录
    List<Map<String, Object>> getBorrowRecordsByStatus(String status);
    
    // 检查借阅是否逾期并更新状态
    void checkAndUpdateOverdueStatus();
    
    // 获取即将到期的借阅记录（用于提醒）
    List<Map<String, Object>> getComingDueBorrowRecords(int days);
    
    /**
     * 统一的分页查询方法，替代上面的多个查询方法
     * @param pageModel 分页模型，包含页码、每页记录数、查询条件等
     * @return 返回查询结果列表
     */
    List<Map<String, Object>> getBorrowRecordsByPage(PageModel pageModel);
} 